package br.rui.adiantamento.visao.servlet;

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.rui.adiantamento.dominio.Funcionario;
import br.rui.adiantamento.negocio.Fachada;
import br.rui.planilhas.util.Utils;

/**
 * Servlet Class
 *
 * @web.servlet              name="Consultar"
 *                           display-name="Name for Consultar"
 *                           description="Description for Consultar"
 * @web.servlet-mapping      url-pattern="/Consultar"
 * @web.servlet-init-param   name="A parameter"
 *                           value="A value"
 */
@SuppressWarnings("serial")
public class ConsultarServlet extends HttpServlet {

	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException,
		IOException {
		doPost(req, resp);
	}

	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException,IOException {
		String acao = req.getParameter("acao");
		String url = "";
		if(acao!=null){
			try {
				if(acao.equalsIgnoreCase("Funcionarios")){					
					url = consultarFuncionarios(req);
				}
				if(acao.equalsIgnoreCase("Funcionario")){					
					url = consultarFuncionario(req);
				}
				if(acao.equalsIgnoreCase("Adiantamentos")){					
					url = consultarAdiantamentos(req);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		req.getRequestDispatcher(url).forward(req,resp);
	}

	private String consultarFuncionarios(HttpServletRequest req) {
		String url = "";
		
		String cnpjEmpresa = req.getParameter("cnpjEmpresa"); 

		req.setAttribute("empresa", Fachada.recuperarCliente(cnpjEmpresa));
		req.setAttribute("funcionarios", Fachada.recuperarFuncionarios(cnpjEmpresa));
		req.setAttribute("reqURI", "consultar?acao=Funcionarios");
		url = "index.jsp?acao=adiantamento_funcionario&interna=adiantamento_listarFuncionarios";
		return url;
	}
	
	private String consultarFuncionario(HttpServletRequest req) {
		String url = "";
		String cnpjEmpresa = req.getParameter("cnpjEmpresa");
		String cpfFuncionario = req.getParameter("cpfFuncionario");
		if(cpfFuncionario!="" && cpfFuncionario!=null && cnpjEmpresa!="" && cnpjEmpresa!=null){
			Funcionario funcionario = Fachada.recuperarFuncinario(cpfFuncionario);
			funcionario.setAdiantamentos(Fachada.recuperarAdiantamentos(funcionario));
			req.setAttribute("empresa",Fachada.recuperarCliente(cnpjEmpresa));
			req.setAttribute("funcionario", funcionario);
			req.setAttribute("reqURI", "consultar?cnpjEmpresa="+cnpjEmpresa+"&cpfFuncionario="+cpfFuncionario+"&acao=Funcionario");
			url = "index.jsp?acao=adiantamento_funcionario&interna=adiantamento_dadosFuncionario";
		}
		return url;
	}
	
	private String consultarAdiantamentos(HttpServletRequest req) {
		String url = "";
		String cnpjEmpresa = req.getParameter("cnpjEmpresa");
		Date periodoInicial = Utils.String2Date(req.getParameter("periodoInicial"));
		Date periodoFinal = Utils.String2Date(req.getParameter("periodoFinal"));		
		
		req.setAttribute("empresa", Fachada.recuperarCliente(cnpjEmpresa));
		req.setAttribute("periodoInicial", periodoInicial);
		req.setAttribute("periodoFinal", periodoFinal);
		req.setAttribute("adiantamentos", Fachada.recuperarAdiantamentosPeriodo(cnpjEmpresa,periodoInicial, periodoFinal));
		req.setAttribute("reqURI", "consultarAdiantamento?acao=Adiantamentos&" +
															"cnpjEmpresa="+cnpjEmpresa+ "&" +
															"periodoInicial="+periodoInicial+ "&" +
															"periodoFinal="+periodoFinal);
		url = "index.jsp?acao=adiantamento&interna=adiantamento_listarAdiantamentos";
		return url;
	}
}
